/**
 * @author QL
 * @date 2021-12-28 15:59:04
 * @version V..
 * @description 自定义 自动扫描指定目录的.vue文件，识别并挂载为全局组件
 */
import Vue from 'vue'

// 扫描 components 文件夹（包含子文件夹）下的 所有.vue 后缀文件，初始化目录上下文操作对象
const reqComponents = require.context("./components", true, /\.vue$/);

// 1. 遍历文件对象的相对路径列表
// 2. 利用上下文操作对象的 “构造方法（即上下文操作对象同名的方法）” ，输入文件相对路径，获取指定文件的实例对象
// 3. 使用Vue对象的component方法，将第二步获取的组件配置对象注册挂载到Vue的全局组件中
reqComponents.keys().forEach((comPath) => {

    /**
     * @author QL
     * @functionName  Vue.component(param1, param2)
     * @param param1 第一参数： 定义页面上引用组件,使用的<标签/>名称
     * @param param2 第二参数： 组件的实例对象/根元素对象 
     * @date 2021-12-24 13:59:50
     * @version V..
     * @description reqComponents.default 用于适配 export default 方式导出的组件，否则默认直接使用组件根对象
     */
    if (reqComponents(comPath).default) {
        // console.log("组件default对象：", reqComponents(comPath).default)
        Vue.component(reqComponents(comPath).default.name, reqComponents(comPath).default);
    } else {
        // console.log("组件根对象：", reqComponents(comPath))
        Vue.component(reqComponents(comPath).name, reqComponents(comPath));
    }
});